/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.cast.teseg.dao;
import edu.cast.teseg.controladores.Controlador;


import edu.cast.teseg.modelo.GraficoGrafo;
import edu.cast.teseg.modelo.RedSocial;
import edu.uci.ics.jung.graph.Graph;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 *
 * @author edgarin
 */

public class lineaPorlineaDAO {
    Controlador controlGL;
    

    public lineaPorlineaDAO(){}
    
    //*** metodo para instancionar el controlador ***//
    public void setControlador(Controlador x){ this.controlGL = x; }
    
    //*** metodo para leer el archivo de texto ***//  En desarrollo el Obtjeto Grafo
    public void setRelacionesGrafo(File x) {        
        GraficoGrafo graficoGrafo = new GraficoGrafo();
        RedSocial grafoRed = new RedSocial(); 
        Graph grafo = graficoGrafo.getGrafo();
        
       this.controlGL.setGraficoGrafo();
        //grafoRed.setRelacion(origen, destino);
        
        try {
            FileInputStream fis = new FileInputStream(x);
            DataInputStream dis = new DataInputStream(fis);
            BufferedReader br = new BufferedReader(new InputStreamReader(dis, "UTF-8"));
            boolean haga = false;
            String linea;
         
            while((linea = br.readLine()) != null){   // aqui se crean los vertices y aristas
                
                String[] array = this.separaEspacios(linea, 2);

               
            }
            
        } catch (IOException ex) {
            this.controlGL.setMensajeErrores("Error de Archivo");
        }     
    }
    
    //*** metodo que sepata las lineas por espacios en blanco ***//
    public String[] separaEspacios(String linea, int num){        
        String[] retorno = new String[num];
        StringBuilder indice = new StringBuilder();
        int contador = 0;

        for(int i = 0; i < linea.length(); i++){
            if(linea.charAt(i) != ' ')
                indice.append(Character.toString(linea.charAt(i)));
            else{
                contador++;
                indice = new StringBuilder();
                continue;
            }
             
            if(!this.controlGL.isNumeric(indice.toString())){                
                this.controlGL.setMensajeErrores("error al leer Archivo datos no numericos o no enteros");
                break; 
            }
             
            retorno[contador] = indice.toString();           
        }       
        
        return retorno; 
    }
    
    //*** metodo que guarda el grafo en un archivo de texto ***//  falta terminar 
    public void escribirArchivoRespuestas(File archivoASalvar, StringBuilder ejemplos){
        try {
            FileWriter fr = new FileWriter(archivoASalvar);
            BufferedWriter bf = new BufferedWriter(fr);
            bf.write(ejemplos.toString());
            bf.close();
            fr.close();
        } catch (IOException ex) {
            this.controlGL.setMensajeErrores("Error de Archivo");
        }        
    }
           
}